package in.lib.view.spannable;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
import in.data.entity.LinkEntity;
import in.lib.Constants;
import in.lib.builder.DialogBuilder;
import in.lib.manager.SettingsManager;
import in.lib.utils.BitUtils;
import in.lib.utils.URLUtils;
import in.rob.client.R;
import in.rob.client.URLMatcher;
public class LinkClickableSpan extends NotUnderlinedClickableSpan
{
private final LinkEntity link;
public LinkClickableSpan(LinkEntity link)
{
this.link = link;
}
@Override public boolean onTouch(View widget, MotionEvent m)
{
return super.onTouch(widget, m);
}
@Override public void onSimpleClick(View widget)
{
super.onSimpleClick(widget);
Context ctx = widget.getContext();
openUrl(ctx);
}
public void openUrl(Context ctx)
{
Intent intent = null;
if (BitUtils.contains(SettingsManager.getInstance().getInAppViewerBit(), Constants.BIT_IN_APP_VIEWER_BROWSER))
{
if (URLUtils.isYoutubeVideo(Uri.parse(link.getUrl())))
{
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(link.getUrl()));
}
else
{
intent = new Intent(ctx, URLMatcher.class);
intent.setData(Uri.parse(link.getUrl()));
}
}
if (intent == null)
{
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(link.getUrl()));
}
ctx.startActivity(intent);
}
@Override public void onLongClick(View widget)
{
super.onLongClick(widget);
final Context ctx = widget.getContext();
DialogBuilder.create(ctx)
.setTitle(link.getUrl())
.setItems(new CharSequence[]{ctx.getString(R.string.open_url), ctx.getString(R.string.copy_url), ctx.getString(R.string.share_url)}, new OnClickListener()
{
@Override public void onClick(DialogInterface dialog, int which)
{
if (which == 0)
{
openUrl(ctx);
}
else if (which == 1)
{
android.content.ClipboardManager clipboard = (android.content.ClipboardManager)ctx.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", link.getUrl());
clipboard.setPrimaryClip(clip);
Toast.makeText(ctx, ctx.getString(R.string.copy_url_success), Toast.LENGTH_SHORT).show();
}
else if (which == 2)
{
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, link.getUrl());
shareIntent.setType("text/plain");
((Activity)ctx).startActivity(Intent.createChooser(shareIntent, ctx.getString(R.string.share_via)));
}
}
})
.show();
}
}